Field
The disclosed embodiments relate to stack traces for application debugging. More specifically, the disclosed embodiments relate to techniques for performing efficient address-to-symbol translation of stack traces in software programs.
Related Art
A stack trace of a software program is commonly generated in response to a crash, error, and/or other event in the software program. The stack trace may include a sequence of stack frames containing memory addresses of active subroutines at the time of the event. However, such memory addresses may not provide useful information to a developer attempting to debug or analyze the event. Instead, the memory addresses may be translated into symbols representing the instructions, such as names of methods or functions associated with the active subroutines.
During address-to-symbol translation of stack traces for a software program, a script may invoke a utility for each memory address in a stack trace of the software program. The utility may search a symbol file containing a set of mappings of memory addresses in a given build of the software program to symbols of instructions stored at the memory addresses. After locating the mapping of the memory address to a symbol in the symbol file, the utility may return the symbol, and the script may replace the memory address in the stack trace with the returned symbol. As a result, the performance of the utility and/or script may decrease as the number of stack traces and/or builds for the software program increase.
In the figures, like reference numerals refer to the same figure elements.